package com.zmn.oms.services.interfaces.tag;

import com.zmn.oms.model.dto.tag.OrderTagDTO;
import com.zmn.oms.model.dto.tag.OrderTagDelDTO;
import com.zmn.oms.model.entity.tag.OrderTag;

import java.util.List;

/**
 * 类描述：订单标签业务
 *
 * @author wangxiaokun
 * @since 2021/06/24 16:37
 */
public interface OrderTagService {

    /**
     * 根据tagId查询订单标记数量
     * @param orderId
     * @param tagId
     * @return
     */
    Integer countOrderTagByOrderIdAndTagIdSrcMaster(Long orderId, Integer tagId);

    /**
     * 根据tagId查询订单标记数量
     *
     * @param orderId
     * @param tagId
     * @return
     */
    Integer countOrderTagByOrderIdAndTagId(Long orderId, Integer tagId);

    /**
     * 根据订单id和tagId查询订单标记
     *
     * @param orderId
     * @param tagId
     * @return
     */
    List<OrderTag> listOrderTagByOrderIdAndTagId(Long orderId, Integer tagId);

    /**
     * 根据订单id查询标签列表
     *
     * @param orderId
     * @return
     */
    List<OrderTag> listOrderTagByOrderIdSrcMaster(Long orderId, Long workId);

    /**
     * 根据订单id查询标签列表
     *
     * @param orderId
     * @return
     */
    List<OrderTag> listOrderTagByOrderId(Long orderId, Long workId);

    /**
     * 根据订单id集合查询标签列表
     *
     * @param orderIdList
     * @return
     */
    List<OrderTag> listOrderTagByOrderIdList(List<Long> orderIdList);

    /**
     * 新增标签 （下单插入单个专用不需要发送mq）
     * @param orderTag
     * @return
     */
    Integer insertOrderTag(OrderTag orderTag);

    /**
     * 新增标签
     *
     * @param orderTagDTO
     * @return
     */
    void saveOrderTagList(OrderTagDTO orderTagDTO);

    /**
     *
     * @param orderTagDelDTO
     * @return
     */
    Integer deleteOrderTagByTagIdList(OrderTagDelDTO orderTagDelDTO);
}
